home *** CD-ROM | disk | FTP | other *** search
/ Aminet 24 / Aminet 24 (1998)(GTI - Schatztruhe)[!][Apr 1998].iso / Aminet / dev / c / AmiVoGL_MDEV.lha / examples / fsimple.F < prev    next >
Text File  |  1991-06-03  |  2KB  |  142 lines

  1.     program fsimple
  2.  
  3.  
  4. #ifdef SGI
  5. #include "fgl.h"
  6. #include "fdevice.h"
  7. #else
  8. #include "fvogl.h"
  9. #include "fvodevice.h"
  10. #endif
  11.  
  12. c  A program showing basic line drawing, text and (if applicable)
  13. c  colour. As none of the projection routines have been called we
  14. c  move and draw in the initial coordinate system -1.0 to 1.0.
  15. c
  16.     character fname*80, p*11
  17.     logical sfont
  18.     integer*2 val
  19.     data p/'Hello world'/
  20.  
  21.     
  22.     print*,'Use (h)ardware font or (H)ershey font?'
  23.     read(*,'(a)') fname
  24.  
  25.     sfont = fname(1:1) .eq. 'H'
  26.     
  27.     if (sfont) then
  28.         print*,'Enter a Hershey font name:'
  29.         read(*,'(a)') fname
  30.     end if
  31.     
  32. c
  33. c  set up device 
  34. c
  35.     call winope('simple', 6)
  36. c
  37. c  We want to exit after a keyboard press.
  38. c
  39.     call unqdev(INPUTC)
  40.     call qdevic(KEYBD)
  41. c
  42. c  We want our coordinates to go from -1 to 1 in x and y
  43. c
  44.     call ortho2(-1.0, 1.0, -1.0, 1.0)
  45. c
  46. c  change font to the one input...and set textsize
  47. c
  48.     if (sfont) then
  49.         call hfont(fname, nchars(fname))
  50.         call htexts(0.05, 0.05)
  51.     end if
  52. c
  53. c  set current color
  54. c
  55.     call color(BLACK)
  56. c
  57. c  clear screen to current color 
  58. c
  59.     call clear
  60. c
  61. c
  62.     call color(GREEN)
  63. c
  64. c  2 d move to start where we want to draw a string start 
  65. c  Uses cmov2 for 'hardware' font or move2 for software font
  66. c  then draws string in current color 
  67. c
  68.     if (sfont) then
  69.         call move2(-0.9, 0.9)
  70.         call hchars('A Simple Example', 16)
  71.     else
  72.         call cmov2(-0.9, 0.9)
  73.         call charst('A Simple Example', 16)
  74.     end if
  75. c
  76. c
  77. c  the next four lines draw the x 
  78. c
  79.     call move2(0.0, 0.0)
  80.     call draw2(0.76, 0.76)
  81.     call move2(0.0, 0.76)
  82.     call draw2(0.76, 0.0)
  83.  
  84. c
  85. c  Now some more text...
  86. c
  87.     if (sfont) then
  88.         call move2(0.0, 0.5)
  89.         call hchars('x done', 6)
  90.         call hchars('next sentence', 13)
  91.         call move2(0.0, 0.1)
  92.         do 10 i = 1, 11
  93.             call hdrawc(p(i:i))
  94. 10        continue
  95.     else
  96.         call cmov2(0.0, 0.5)
  97.         call charst('x done', 6)
  98.         call charst('next sentence', 13)
  99.         call cmov2(0.0, 0.1)
  100.         do 20 i = 1, 11
  101.             call charst(p(i:i), 1)
  102. 20        continue
  103.     end if
  104.  
  105. c  the next five lines draw the square
  106. c
  107.     call move2(0.0, 0.0)
  108.     call draw2(0.76, 0.0)
  109.     call draw2(0.76, 0.76)
  110.     call draw2(0.0, 0.76)
  111.     call draw2(0.0, 0.0)
  112. c
  113. c  wait for some input 
  114. c
  115.     idum = qread(val)
  116. c
  117. c  set the screen back to its original state 
  118. c
  119.     call gexit
  120.     end
  121. c
  122. c nchars
  123. c
  124. c return the real length of a string padded with blanks
  125. c
  126.     integer function nchars(str)
  127.     character *(*) str
  128.  
  129.     do 10 i = len(str), 1, -1
  130.         if (str(i:i) .ne. ' ') then
  131.             nchars = i
  132.             return
  133.         end if
  134. 10      continue
  135.  
  136.     nchars = 0
  137.  
  138.     return
  139.  
  140.     end
  141.